document.addEventListener('DOMContentLoaded', function() {
    // DOM元素获取
    const notesList = document.getElementById('notes-list');
    const noteEditor = document.getElementById('note-editor');
    const newNoteBtn = document.getElementById('new-note-btn');
    const saveNoteBtn = document.getElementById('save-note-btn');
    const backBtn = document.getElementById('back-btn');
    const noteTitle = document.querySelector('.note-title');
    const noteContent = document.querySelector('.note-content');
    const searchInput = document.querySelector('.search-bar input');
    const emptyState = document.querySelector('.empty-state');

    // 当前编辑的备忘录ID
    let currentNoteId = null;
    // 当前备忘录类型
    let currentNoteType = null;

    // 备忘录类型模板
    const noteTemplates = {
        study: {
            title: '学习笔记 - ' + new Date().toLocaleDateString(),
            content: '## 学习主题\n\n### 核心概念\n- \n\n### 重点笔记\n- \n\n### 问题与解答\n- 问题：\n  解答：\n\n### 总结反思\n'
        },
        plan: {
            title: '计划笔记 - ' + new Date().toLocaleDateString(),
            content: '## 计划主题\n\n### 目标\n- \n\n### 任务列表\n- [ ] \n- [ ] \n- [ ] \n\n### 时间安排\n- 开始时间：\n- 截止时间：\n\n### 进度跟踪\n- \n\n### 完成情况\n'
        },
        schedule: {
            title: '课程表 - ' + new Date().toLocaleDateString(),
            content: '## 课程表\n\n| 时间       | 周一 | 周二 | 周三 | 周四 | 周五 |\n|------------|------|------|------|------|------|\n| 08:00-09:40 |      |      |      |      |      |\n| 10:00-11:40 |      |      |      |      |      |\n| 14:00-15:40 |      |      |      |      |      |\n| 16:00-17:40 |      |      |      |      |      |\n| 19:00-20:40 |      |      |      |      |      |\n'
        },
        quick: {
            title: '随手记 - ' + new Date().toLocaleDateString(),
            content: '## 随手记\n\n时间：' + new Date().toLocaleString() + '\n\n内容：\n'
        },
        mind: {
            title: '思维笔记 - ' + new Date().toLocaleDateString(),
            content: '## 中心主题\n\n### 主要分支 1\n- 子主题 1.1\n  - \n  - \n- 子主题 1.2\n  - \n  - \n\n### 主要分支 2\n- 子主题 2.1\n  - \n  - \n- 子主题 2.2\n  - \n  - \n\n### 关联与想法\n- \n'
        }
    };

    // 初始化应用
    function initApp() {
        loadNotes();
        setupEventListeners();
    }

    // 从localStorage加载备忘录
    function loadNotes(searchQuery = '') {
        const notes = JSON.parse(localStorage.getItem('hplokNotes') || '[]');
        renderNotes(notes, searchQuery);
    }

    // 渲染备忘录列表
    function renderNotes(notes, searchQuery = '') {
        notesList.innerHTML = '';

        // 过滤搜索结果
        const filteredNotes = searchQuery
            ? notes.filter(note => 
                note.title.toLowerCase().includes(searchQuery.toLowerCase()) || 
                note.content.toLowerCase().includes(searchQuery.toLowerCase())
              )
            : notes;

        if (filteredNotes.length === 0) {
            emptyState.style.display = 'block';
            return;
        }

        emptyState.style.display = 'none';

        // 按时间戳排序，最新的在前
        filteredNotes.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp))
            .forEach(note => {
                const noteCard = createNoteCard(note);
                notesList.appendChild(noteCard);
            });
    }

    // 创建备忘录卡片
    function createNoteCard(note) {
        const card = document.createElement('div');
        card.className = 'note-card';
        card.dataset.id = note.id;

        // 截断长内容
        const truncatedContent = note.content.length > 100
            ? note.content.substring(0, 100) + '...'
            : note.content;

        // 格式化日期
        const date = new Date(note.timestamp);
        const formattedDate = `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;

        card.innerHTML = `
            <h3 class="note-card-title">${note.title || '无标题'}</h3>
            <p class="note-card-content">${truncatedContent}</p>
            <div class="note-card-meta">${formattedDate}</div>
        `;

        // 点击卡片编辑备忘录
        card.addEventListener('click', () => editNote(note.id));

        return card;
    }

    // 编辑备忘录
    function editNote(id) {
        const notes = JSON.parse(localStorage.getItem('hplokNotes') || '[]');
        const note = notes.find(n => n.id === id);

        if (note) {
            currentNoteId = id;
            noteTitle.value = note.title || '';
            noteContent.value = note.content || '';
            showEditor();
        }
    }

    // 显示编辑器
    function showEditor() {
        notesList.style.display = 'none';
        noteEditor.style.display = 'block';
        noteTitle.focus();
    }

    // 返回列表视图
    function showNotesList() {
        noteEditor.style.display = 'none';
        notesList.style.display = 'block';
        currentNoteId = null;
        noteTitle.value = '';
        noteContent.value = '';
    }

    // 保存备忘录
    function saveNote() {
        const title = noteTitle.value.trim();
        const content = noteContent.value.trim();
        const notes = JSON.parse(localStorage.getItem('hplokNotes') || '[]');

        if (currentNoteId) {
            // 更新现有备忘录
            const index = notes.findIndex(n => n.id === currentNoteId);
            if (index !== -1) {
                notes[index] = {
                    ...notes[index],
                    title,
                    content,
                    type: currentNoteType || notes[index].type,
                    timestamp: new Date().toISOString()
                };
            }
        } else {
            // 创建新备忘录
            if (!title && !content) return; // 不保存空备忘录

            const newNote = {
                id: Date.now().toString(),
                title,
                content,
                type: currentNoteType || 'quick', // 默认随手记
                timestamp: new Date().toISOString()
            };
            notes.push(newNote);
        }

        // 保存到localStorage
        localStorage.setItem('hplokNotes', JSON.stringify(notes));

        // 返回列表并刷新
        showNotesList();
        loadNotes(searchInput.value.trim());
    }

    // 设置事件监听器
    function setupEventListeners() {
        // 新建备忘录
        newNoteBtn.addEventListener('click', () => {
            currentNoteId = null;
            currentNoteType = null;
            noteTitle.value = '';
            noteContent.value = '';
            // 显示类型选择器，隐藏编辑器内容
            document.getElementById('note-type-selector').style.display = 'block';
            document.querySelector('.note-title').style.display = 'none';
            document.querySelector('.note-content').style.display = 'none';
            showEditor();
        });

        // 备忘录类型按钮点击事件
        document.querySelectorAll('.type-btn').forEach(btn => {
            btn.addEventListener('click', function() {
                // 移除其他按钮的active类
                document.querySelectorAll('.type-btn').forEach(b => b.classList.remove('active'));
                // 添加当前按钮的active类
                this.classList.add('active');
                // 获取类型
                const type = this.dataset.type;
                currentNoteType = type;
                // 填充模板
                noteTitle.value = noteTemplates[type].title;
                noteContent.value = noteTemplates[type].content;
                // 显示编辑器内容，隐藏类型选择器
                document.getElementById('note-type-selector').style.display = 'none';
                document.querySelector('.note-title').style.display = 'block';
                document.querySelector('.note-content').style.display = 'block';
                noteTitle.focus();
            });
        });

        // 保存备忘录
        saveNoteBtn.addEventListener('click', saveNote);

        // 返回列表
        backBtn.addEventListener('click', showNotesList);

        // 搜索功能
        searchInput.addEventListener('input', (e) => {
            loadNotes(e.target.value.trim());
        });

        // 按Enter键保存（在内容框）
        noteContent.addEventListener('keydown', (e) => {
            if (e.key === 'Enter' && e.ctrlKey) {
                saveNote();
                e.preventDefault();
            }
        });
    }

    // 初始化应用
    initApp();
});